Voorbeeld van de functie PPmt

Dit voorbeeld maakt gebruik van de functie PPmt om te berekenen welk deel van een betaling voor een bepaalde periode de hoofdsom is wanneer alle betalingen even groot zijn. Gegeven zijn de rentevoet per periode (APR / 12), de betalingsperiode waarvoor het deel van de hoofdsom gewenst wordt (Period), het totale aantal betalingen (TotPmts), de huidige waarde of hoofdsom van de lening (PVal), de toekomstige waarde van de lening (FVal) en een getal dat aangeeft of de betalingen aan het begin of aan het eind van de betalingsperiode plaatsvinden (PayType).

Dim NL, TB, Fmt, FVal, PVal, APR, TotPmts, PayType, Payment, Msg, MakeChart, Period, P, I
Const ENDPERIOD = 0, BEGINPERIOD = 1    ' Wanneer de betalingen plaatsvinden.
NL = Chr(13) & Chr(10)    ' Definieer nieuwe regel.
TB = Chr(9)    ' Definieer tab.
Fmt = "###.###.##0,00"    ' Definieer valutanotatie.
FVal = 0    ' Gewoonlijk 0 voor een lening.
PVal = InputBox("Hoeveel wilt u lenen?")
APR = InputBox("Wat is de jaarlijkse rentevoet van uw lening?")
If APR > 1 Then APR = APR / 100    ' Zorg voor de juiste vorm.
TotPmts = InputBox("Hoeveel maandelijkse betalingen vinden er plaats?")
PayType = MsgBox("Vinden de betalingen aan het eind van de maand plaats?", vbYesNo)
If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD
Payment = Abs(-Pmt(APR / 12, TotPmts, PVal, FVal, PayType))
Msg = "Uw maandelijkse betaling is " & Format(Payment, Fmt) & ". "
Msg = Msg & "Wilt u een specificatie van de hoofdsom en "
Msg = Msg & "rente per periode?"
MakeChart = MsgBox(Msg, vbYesNo)    ' Kijk of een grafiek is gevraagd.
If MakeChart <> vbNo Then
    If TotPmts > 12 Then MsgBox "Alleen eerste jaar wordt weergegeven."
    Msg = "Maand  Betaling  Hoofdsom  Rente" & NL
    For Period = 1 To TotPmts
        If Period > 12 Then Exit For    ' Toon alleen eerste 12.
        P = PPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)
        P = (Int((P + .005) * 100) / 100)    ' Rond hoofdsom af.
        I = Payment - P
        I = (Int((I + .005) * 100) / 100)    ' Rond rente af.
        Msg = Msg & Period & TB & Format(Payment, Fmt)
        Msg = Msg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL
    Next Period
    MsgBox Msg    ' Geef afschrijvingstabel weer.
End If